import java.util.Date;

class ThermostaticWaterTank {

    private boolean isPowerOn;
    private double currentTemperature;
    private boolean hasWater;
    private boolean isTankBroken;

    public ThermostaticWaterTank() {
        isPowerOn = false;
        currentTemperature = 0;
        hasWater = false;
        isTankBroken = false;
    }

    // 模拟温度传感器检测温度
    public void detectTemperature() {
        // 这里只是简单模拟一个随机温度变化，实际应从真实传感器获取数据
        currentTemperature = Math.random() * 80 + 20;
    }

    // 模拟水量传感器检测水量
    public void detectWaterLevel() {
        // 简单模拟是否有水，实际应根据传感器准确判断
        hasWater = Math.random() > 0.5;
    }

    // 执行恒温水箱的逻辑操作
    public void operate() {
        Date now = new Date();
        int hour = now.getHours();

        if (isTankBroken) {
            System.out.println("水箱已坏，进行维修。");
            return;
        }

        if (hour == 23) {
            // 晚上11点整，自动断开电源，进入休眠状态
            isPowerOn = false;
            System.out.println("晚上11点整，自动断开电源，进入休眠状态。");
            return;
        } else if (hour == 7) {
            // 早上7点整，自动进入上述恒温烧水过程
            isPowerOn = true;
            System.out.println("早上7点整，自动进入恒温烧水过程。");
        }

        detectTemperature();
        detectWaterLevel();

        if (isPowerOn) {
            if (currentTemperature < 20 && hasWater) {
                // 当温度低于20°且有水时，打开继电器电源，开始烧水
                System.out.println("温度低于20°且有水，打开继电器电源，开始烧水。");
            } else if (currentTemperature >= 100) {
                // 当温度达到100°，断开电源
                isPowerOn = false;
                System.out.println("温度达到100°，断开电源。");
            }
        } else {
            if (currentTemperature < 20 && hasWater && hour!= 23) {
                // 如果当前断电且温度低且有水且不是晚上11点，打开电源
                isPowerOn = true;
                System.out.println("温度低且有水，非晚上11点，打开电源开始烧水。");
            }
        }
    }

    public static void main(String[] args) {
        ThermostaticWaterTank tank = new ThermostaticWaterTank();

        // 模拟运行一段时间，这里简单循环多次
        for (int i = 0; i < 24; i++) {
            tank.operate();
        }
    }
}